import os
import json

def mark_empty_json_files():
    """
    遍历所有目录，检查JSON文件是否为空，
    如果为空，则在对应的MD文件名前加*
    """
    # 获取当前目录下的所有文件和文件夹
    for item in os.listdir('.'):
        # 只处理目录
        if os.path.isdir(item):
            dir_path = os.path.join('.', item)
            
            # 遍历目录中的所有文件
            for file in os.listdir(dir_path):
                file_path = os.path.join(dir_path, file)
                
                # 检查是否为JSON文件
                if file.endswith('.json'):
                    # 检查JSON文件是否为空或内容为空数组
                    try:
                        with open(file_path, 'r', encoding='utf-8') as f:
                            data = json.load(f)
                            
                        # 如果JSON内容为空数组或空对象
                        if not data or (isinstance(data, list) and len(data) == 0):
                            # 查找对应的MD文件
                            md_file_name = file.replace('.json', '.md')
                            md_file_path = os.path.join(dir_path, md_file_name)
                            
                            # 如果对应的MD文件存在且未标记
                            if os.path.exists(md_file_path) and not os.path.basename(md_file_path).startswith('*'):
                                # 重命名MD文件，在文件名前加*
                                new_md_file_name = 'v' + os.path.basename(md_file_path)
                                new_md_file_path = os.path.join(dir_path, new_md_file_name)
                                
                                os.rename(md_file_path, new_md_file_path)
                                print(f"标记文件: {md_file_path} -> {new_md_file_path}")
                                
                    except json.JSONDecodeError:
                        # JSON解析错误，视为空文件处理
                        md_file_name = file.replace('.json', '.md')
                        md_file_path = os.path.join(dir_path, md_file_name)
                        
                        # 如果对应的MD文件存在且未标记
                        if os.path.exists(md_file_path) and not os.path.basename(md_file_path).startswith('*'):
                            # 重命名MD文件，在文件名前加*
                            new_md_file_name = '*' + os.path.basename(md_file_path)
                            new_md_file_path = os.path.join(dir_path, new_md_file_name)
                            
                            os.rename(md_file_path, new_md_file_path)
                            print(f"标记文件 (JSON解析错误): {md_file_path} -> {new_md_file_path}")
                    except Exception as e:
                        print(f"处理文件 {file_path} 时出错: {e}")

def main():
    print("开始检查并标记空JSON文件对应的MD文件...")
    mark_empty_json_files()
    print("处理完成。")

if __name__ == "__main__":
    main()